Microcode images are used in the field of processor-based systems for setting initial hardware configurations in an electronic device when the electronic device is first powered up or booted up. Microcode images are also used to load an operating system into the electronic device. In addition, microcode images can also perform diagnostic tests of the hardware during this initialization stage.
As an example, a set-top box, which is used to provide television signals to a television set, can include a networking chip that uses, for instance, a 128 kilobyte microcode image during a reboot procedure. It should be noted, however, that one set-top box may use a microcode image that is different from a microcode image of another set-top box depending on certain “device configuration parameters.” For instance, these device configuration parameters may include, for example, media type, frequency band, and quality of service (QoS). Parameters related to media type correspond to different types of media to which the set-top box is connected, e.g. twisted pair wiring or coaxial cable. Parameters related to frequency band correspond to different frequency ranges within which the set-top box operates, e.g. a 12-20 MHz band, 18-25 MHz band, or other frequency bands that may be introduced in the future. Parameters related to QoS correspond to different network performance or service expectations from various providers.
In this example, given that there are three device configuration parameters and each includes two selectable variables, the number of permutations or different combinations of device configuration parameters is eight. A set-top box uses one of these eight permutations upon reboot, and the appropriate permutation is loaded into that set-top box. Other set-top boxes having different device configuration parameters require a different microcode image. To manage the different microcode images for each set-top box, a network operator can store the various permutations for each set-top box in the network. However, managing which set-top box maps to which combination of selectable parameters can be overwhelming to a network operator when hundreds or even thousands of set-top boxes and parameter combinations are possible. Also, this solution would require a large amount of storage and management resources and is not particularly feasible.
Another solution to the issue of multiple permutations of microcode images is to store all possible permutations on each set-top box. Then, based on the particular set-up configuration of each device, the respective permutation can be used as needed. However, since each microcode image may be about 128 Kbytes, storing eight images would require more than 1 Mbyte of flash memory. As more device configuration parameters and/or selectable variables are introduced, even more memory would be needed to store the numerous permutations. Dedicated flash memory for storing these permutations in this environment therefore adds a significant cost to a set-top box. Substantial savings could therefore be achieved by reducing the amount of storage needed during start up. Thus, a need exists in the industry to address the aforementioned deficiencies and inadequacies to simplify the management of various microcode images for different device configurations and to reduce the cost of these devices.